#pragma once

namespace Base { namespace UnitTest {

    class Test;

    class TestMgr
    {
    private:
        TestMgr();
        ~TestMgr();
        
    public:
        static TestMgr* get();
        void run(const std::wstring& exePath);
        const std::wstring& exePath() const;
        
    private:
        friend class Test;
        void addTest(Test*);
        bool hasTest(Test*) const;
        
    private:
        typedef std::vector<Test*> Tests;
        
        Tests           m_tests;
        std::wstring    m_exePath;
    };

}}